﻿#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtWidgets/QMainWindow>
#include <QMenu>
#include <QAction>
#include <QLabel>

#include "GlobalDef.h"
#include "MessDispath.h"

#include "ui_MainWindow.h"

namespace Core {

	class MainWindow : public QMainWindow
	{
		Q_OBJECT

	public:
		explicit MainWindow(QWidget *parent = Q_NULLPTR);
		~MainWindow();

		void initAll();

	private Q_SLOTS:
		/**
		* @brief	slotSystemLogInfo 系统日志信息
		* @param	strLog 日志信息
		* @param	iLogType 日志类型  0-绿色 -1-红色
		* @return
		*/
		void slotSystemLogInfo(QString strLog, int iLogType);

		/**
		* @brief	sloterialPortSendMsgLength 设置串口发送信息长度
		* @param	iLength 信息长度
		* @return
		*/
		void slotNetworkSendMsgLength(int iLength);

		/**
		* @brief	slotSerialPortRecvMsgLength 设置串口接收信息长度
		* @param	iLength 信息长度
		* @return
		*/
		void slotNetworkRecvMsgLength(int iLength);

		/**
		* @brief	slotAboutActionTriggered
		* @return
		*/
		void slotAboutActionTriggered();

	private:
		/**
		 * @brief	initWidget 初始化窗口
		 * @return
		 */
		void initWidget();

		/**
		 * @brief	initMenuBar 初始化菜单栏
		 * @return
		 */
		void initMenuBar();

		/**
		 * @brief	initToolBar 初始化工具栏
		 * @return
		 */
		void initToolBar();

		/**
		 * @brief	initStatusBar 初始化状态
		 * @return
		 */
		void initStatusBar();

	private:
		Ui::MainWindowClass ui;

		QMenu *m_pEditMenu;					// 编辑菜单
		QAction *m_pActionOpen;				// 
		QAction *m_pActionClose;			//

		QAction *m_pActionClearLog;			// 
		QAction *m_pActionClearSendLog;		// 

		QMenu *m_pToolMenu;					// 工具菜单
		QAction *m_pActionASCIICode;		// 
		QAction *m_pActionCrc;				// 

		QMenu *m_pHelpMenu;					// 帮助菜单
		QAction * m_pActionAbout;			// 关于

		QLabel *m_pStateLog;				// 串口状态信息
		QLabel *m_pSendLog;					// 发送信息
		QLabel *m_pReavLog;					// 接收信息

	};

}//namespace Core 

#endif // MAINWINDOW_H